フォーラム
このフォーラムでは、r/jailbreakなどのコミュニティがない日本でも脱獄に関する質問などができるフォーラムです。
使い方としては、コメントしたい内容があげられている記事に関係ない場合にこのフォーラムをお使いください。
あげられている記事に関係する場合は、ぜひそちらにコメントしてください。
ルール
最悪の場合には、アカウントバンになります。

Tweakの紹介

質問形式
必要情報
質問する際には、デバイスのモデル名とOSのバージョンを載せてください。
例
iPhone XS | iOS 13.2.3 |
Apple TV 4 | tvOS 13.3 |
Apple Watch | watchOS 13.4 |
エラー内容
エラー内容の対処法などを質問する際には、エラー画面のスクショを載せてください。(画像はImgurなどを使ってリンクを作成してください。)
そしてエラー全文を文字として載せてください。(長くなる場合はPastebinなどを使ってリンクを作成してください。)
名称に関して
いろいろなツールなどがありますが、その際にはできるだけ略称や敬称ではなく正式名称で載せてください。
unc0ver > u0
checkra1n > ra1n
アカウント登録
このフォーラムではアカウント登録をすると簡単に返信の通知を受け取ることができます。
そしてログインしていないアカウントでの返信はスパム対策のため一部承認制になる場合があります。
sugiutaさんのGitHubにあるtutrialのTweak.xmのほとんどは理解できたのですが、以下のコードがわかりませんでした。
このコードではなにをやっているのでしょうか?
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL,(CFNotificationCallback)loadPrefs, CFSTR("com.sugi.test/loadPrefs"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
これは簡単にいうとRespringをしなくてもNotificationCenterによってDockの透明度を変えることができるようにするためのコードです。
そうですね、SpringBoardでRespringを行わずに変更できるものにはNotificationCenterが使われてます。
引数に関しての質問です。
1,2,5,6に関しては固定なのでしょうか?
3,4で自分のコードを実行させているのでしょうか?
- CFNotificationCenterGetDarwinNotifyCenter()
- NULL
- (CFNotificationCallback)loadPrefs
- CFSTR("com.sugi.test/loadPrefs")
- NULL
- CFNotificationSuspensionBehaviorDeliverImmediately
大体は固定にしちゃって大丈夫かと。3は自分のコードを実行させてます。4はPostNotificationのstringです。
3はloadPrefsに着目してもう一度Tweak.xm を見てみてください。4はRoot.plistを見てみてください。察しのいいくらげさんならわかると思います。
ありがとうございます。概要がつかめたと思います。
sugiutaさんのソースコードだと第4引数がCFSTRなのですが、UnSubのほうを見てみるとCFStringRefを使用しています。
これは何が違うのでしょうか?
あーおそらくわかりました。
まずコードが少し違うようで、上はいわゆるプログラミングでキャストと呼ばれる変換のコードで、NSStringをCFStringRefに変換しているようです。
そして下はただのString(文字列)を渡すとCFStringRefという型で帰ってくるというメソッドのようです。
(CFStringRef)@"com.sugi.test/loadPrefs"
CFSTR("com.sugi.test/loadPrefs")
そしてGitHubでCFStringRef , CFSTR周りのCoreFoundationを解説してくれている人がいました。その中のこのコードを参考にしました。
CFStringRef cfString = CFSTR("CoreFoundation"); (GitHub)
すごい、初めて知った。何となく使ってたから勉強になった!
しらなくてもいいこともありますが、こういう細かいのを知るとさらに開発がうまくいくかもしれませんね^ ^
あとCFStringRef、CFSTRどっちがいいか問題は自分の浅いプログラミング歴からいうとキャストであるCFStringRefの方がいいのかなとも思います。どちらもプログラミングのコスト(処理の重さ)は同じだと思ウノですが、メソッドであるCFSTRの方だとソースコードをみた際に何を返してくれるメソッドか一目でわからないのでCFStringRefの方がいいような気がします。
海外の開発者の方もCFStringRef派の方が多い気がします。