2012-05-08 24 views
1

我是iOS 5的新手。從Apple的文檔中,我知道ARC是什麼,「對象的所有者應該使用strong表示法」。讀的 「Hello World」 後,我發現一個奇怪的東西(我的意思是混淆了我)視圖控制器的UI元素的所有者是什麼? iOS5與ARC

HelloWorldAppDelegate:

@interface HelloWorldAppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 

@end 

HelloWorldViewController:

#import <UIKit/UIKit.h> 

@interface HelloWorldViewController : UIViewController <UITextFieldDelegate> 
@property (weak, nonatomic) IBOutlet UITextField *textField; 
@property (weak, nonatomic) IBOutlet UILabel *label; 
- (IBAction)changeGreeting:(id)sender; 

@property (copy, nonatomic) NSString *userName; 
@end 

這裏:

@property (weak, nonatomic) IBOutlet UITextField *textField; 
@property (weak, nonatomic) IBOutlet UILabel *label; 

UI元素具有weak表示法並且沒有任何文件具有strong引用他們。所以我很困惑what/who hold them?

回答

1

在我看來,你可以考慮NIB/XIB作爲這些對象的所有者。沒有一個班級擁有它們。請參閱資源編程指南中的"Managing the Lifetimes of Objects from Nib Files"

從實際角度來看,在iOS和OS X中應該將網點定義爲聲明屬性。 商店通常應該是weak,除了那些從文件所有者到nib文件中的頂層對象(或者在iOS中,故事板場景),應該是strong。您創建的,因此應該將通常是默認弱奧特萊斯,這是因爲:

  • 您創建,例如,一個視圖控制器的視圖或窗口控制器窗口的子視圖,是不對象之間的任意引用奧特萊斯意味着所有權。
  • 強大的網點通常由框架類指定(例如,UIViewControllerview outlet,或NSWindowControllerwindow outlet)。
+0

因此,UI框架創建並保存它們。 – Pikaurd

相關問題