Objective-Cのメモリ管理について明確にする必要があります。
クラスヘッダーでオブジェクトを@propertyなしでivarとして宣言すると、次のようになります。
@interface MyFacebooDelegate : UIViewController
{
TableViewController *tableController;
}
...
@end
そして、たとえばコードのどこかで- (void)viewDidLoad
:
tableController = [[TableViewController alloc] init];
それで、それを解放する最良の方法はどこにありますか。インスタントオブジェクトをプロパティにするとどうなりますか?そして、メモリ管理もどうなるか
@interface MyFacebooDelegate : UIViewController
{
TableViewController *tableController;
}
...
@end
@property (nonatomic, strong) TableViewController *tableController;
次の構文は、オブジェクトviewControllerに対して正確に何をしますか。
.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) ViewController *viewController;
@end
.m
@implementation AppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
- (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
}
.....
@end
メソッドを介してオブジェクトを別のクラスに返したい場合、autorelease
最初にメソッド本体でオブジェクトを返し、次にretain
レシーバー側でオブジェクトを返す必要がありますか?たとえば、このメソッドは、メソッド本体とレシーバー側でも正確に何をするかを示します。
-(NSString *)getFriendId
{
NSArray *ar = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
return [ar objectAtIndex:0];
}
私はこれをよく知っていますが、私は本当に混乱していて、あなたの助けが必要です。