[解決済み】セマンティックな問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っている。
質問
現在、iOS 5 SDKを使用してアプリを開発しようとしています。 NSStringをプロパティとして作成し、.mファイル内で合成しようとしています(以前も問題なく合成できました)。今、私はこれを見つけました: "意味上の問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っています(")。
これは私のコードです。 .h
@interface ViewController : UIViewController {
NSString *newTitle;
}
@property (strong, nonatomic) NSString *newTitle;
.m
@synthesize newTitle;
どなたか、これを修正する手がかりをお持ちの方はいらっしゃいませんか? ありがとうございます。
解決方法は?
推測ですが、お使いのコンパイラのバージョンは以下の通りです。 メモリ管理ルール も、宣言されたプロパティ、より具体的には、宣言されたプロパティのアクセサに対してです。
alloc", "new", "copy", "mutableCopy "で始まる名前のメソッドを使用してオブジェクトを作成した場合、そのオブジェクトの所有権を取得することになります。
という名前のプロパティは
newTitle
というメソッドを生成し、それを合成すると
-newTitle
そのため、警告やエラーが発生します。
-newTitle
のゲッターメソッドであるはずです。
newTitle
しかし、命名規則では、メソッド名が
new
は呼び出し元が所有するオブジェクトを返しますが、ゲッターメソッドの場合はそうではありません。
で解決できます。
-
そのプロパティの名前を変更する。
@property (strong, nonatomic) NSString *theNewTitle;
-
プロパティ名を保持し、特殊なメソッド名の接頭辞のいずれかで始まらないゲッター名を指定する。
@property (strong, nonatomic, getter=theNewTitle) NSString *newTitle;
-
プロパティ名とゲッター名の両方を保持し、ゲッター名が
new
に属している。none
メソッドファミリーとは対照的にnew
メソッド・ファミリです。#ifndef __has_attribute #define __has_attribute(x) 0 // Compatibility with non-clang compilers #endif #if __has_attribute(objc_method_family) #define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none))) #else #define BV_OBJC_METHOD_FAMILY_NONE #endif @interface ViewController : UIViewController @property (strong, nonatomic) NSString *newTitle; - (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE; @end
このソリューションでは
newTitle
をプロパティ名とゲッター名の両方として使用することはできません。-newTitle
が、呼び出し元が所有するオブジェクトを返さない場合、他の人がコードを読むときに混乱する可能性があります。
ちなみに、アップルが公開している ARCへの移行に関するリリースノート と記載されています。
で始まる名前をプロパティに付けることはできません。
new
またはcopy
.
この発言は正確ではないことがすでに通知されています。
2015年1月17日を編集。
今気づいたのですが
Clang への最近のコミット
は、上記のオプション 3 を示唆しています。
objc_method_family(none)
を含む)、プロパティ名が特殊なメソッドファミリーの接頭辞のいずれかに一致する一般的な場合について、fix-it があります。Xcodeはいずれこの変更を取り入れると思われます。
関連
-
[解決済み] どのような場合に@synthesizeを明示的に使用する必要がありますか?
-
[解決済み] UILabelのフォントサイズ?
-
[解決済み] デバイス用にコンパイルするとApple Mach-Oのリンカーエラーが発生する。
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] NSDictionary または NSMutableDictionary にキーが含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 「NSString *' 型のパラメータに 'const NSString *' を送ると修飾子が破棄される」警告
-
[解決済み】iOS 7で非推奨のsizeWithFont:の代わりになるものは?
-
[解決済み】セマンティックな問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っている。
-
[解決済み】iOS 7.0とシステム劣化で無効なコンテキスト0x0が表示される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] デバイス用にコンパイルするとApple Mach-Oのリンカーエラーが発生する。
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] 開発者の身元が確認できないため開けない
-
[解決済み] iOS 8で位置情報サービスが利用できない
-
[解決済み] NSStringにパーセント記号を追加する方法
-
[解決済み】浮動小数点値の比較はどのくらい危険か?
-
[解決済み】NSDateをNSStringに変換する。
-
[解決済み】コンパイルの警告:アーキテクチャi386のファイルを処理するルールがない
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?