2013-05-15 8 views
7

アウトレットは、このIBOutlets

@interface SearchViewController : UIViewController<UISearchBarDelegate> {  
    IBOutlet UIView *viewSearchBar; 
    IBOutlet UIScrollView *scrollVieww; 
    IBOutlet UILabel *lblName; 
} 

のように作成することができ、また、この

@interface SearchViewController : UIViewController<UISearchBarDelegate> { 

} 

@property(nonatomic, weak) IBOutlet UIScrollView *scrollVieww; 
@property(nonatomic, weak) IBOutlet UIView *viewSearchBar; 
@property(nonatomic, weak) IBOutlet UILabel *lblName; 

@end 

ように私はARCでnonatomic/atomicstrong/weakを知っているが、最初の例ではどのようなもの彼ら? strong,weak,nonatomicまたはatomic

詳細をご説明いただくかリンクしてください。 ARCの下

+1

アウトレットが所属するかどうかは正直には関係ありませんビューは要素に対する強い参照を持つため、ARCでは強くまたは弱いと宣言されます。 – Joe

+0

@Joeは、はい私は同意するが、それでも彼らは私が前にこの質問を見た@lxt –

+0

、それはviewDidUnloadはiOS6では非推奨とされ、もはやと呼ばれているこの点に留意し –

答えて

7

インスタンス変数は、デフォルトで強いです。また、インスタンス変数でありアクセサーメソッドではないため、原子的でも非原子的でもありません。原子/非原子フラグはマルチスレッドに関連しています。アクセサメソッドがアトミックである必要があるかどうかを指定します。アクセサがアトミックな場合、アクセッサメソッドの途中で他のスレッドに変更することはできません。それが非原子的である場合、そのような制限はありません。

注: IBOutletは何もtypedefではありません。 Interface Builderのフラグであり、メモリ関連の機能はありません。

+2

+1ところで(これは既に知っているが、将来の読者のために)、読者はあなたのコメントを「アトミック」にすることでスレッドの安全性。それはしません。 [デフォルトでのプロパティである原子力](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW37を参照してください。 )をObjective-C_ガイド付き_Programmingに追加してください。 – Rob

+0

'IBOutlet'の正確な定義が(docsから)どういうのか疑問に思う人のために:Interface Builderはアウトレットの表示と接続をXcodeと同期できるようにプロパティを識別するために使われる識別子。宣言の型の直前にこの識別子を挿入します。 –

3

親指の一般的なルール、IBOutletを使って何が弱いとして宣言する必要があります。

weak or strong for IBOutlet and otherを見てください。

+0

私の答えをリンクしてくれてありがとう;) –

+1

+1何か(トップレベルのオブジェクトを除いて、あなた自身の 'IBOutlet'を持っていることは珍しい) [オブジェクトのライフタイムの管理](https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW6)を参照してください。 )を参照してください。 – Rob

5

変数はそうARCの下で、デフォルトで__strongされています

IBOutlet UIView *viewSearchBar;

は参照ARC下IBOutletsに対処するための推奨方法については

IBOutlet __strong UIView *viewSearchBar;

と同じです。 the answer to this

+0

ですので、2番目のアプローチを使用する必要がありますか? –

+0

彼が言ったように、彼らは同じです。関係ない。私はそれを省略して、本当に重要で予期せぬことを明示的に指定することをお勧めします。 – DrummerB

+3

実際にIBOutletは一般的に弱いことが推奨されます。私が答えに加えたリンクされた質問を見てください。 –

関連する問題