2012-04-24 13 views
1

最初の投稿を割り当ててください。申し訳ありませんが私はコードのルールを台無しにした場合。私はBig Nerd Ranch GuideからObjective Cを学ぼうとしています。私は強力な参照を扱う例を投稿します。目的:C:強参照の理解と助けが必要です。

#import <Foundation/Foundation.h> 

@interface Asset : NSObject 
{ 
    NSSTRING *label; 
    unsigned int resaleValue; 
} 
@property (strong) NSString *label; 
@property unsigned int resaleValue; 
@end 

したがって、NSStringは基本的に強力な参照が必要ですが、intはそうではありません。私はNSStringがオブジェクトであることを知っています。何も指定されていなければ、変数に代入のプロパティが与えられています。

したがって、オブジェクトが解放されるまでint型のようなものを解放するのに十分な場合は、Assetオブジェクト内のNSStringオブジェクトを解放しないようにするにはどうすればよいでしょうか?最終的には、私は依然として、アサインメントが何をしているのか、何が強いのかについて混乱していると思います。 std :: shared_ptrのためには、あなたがオブジェクトが割り当て中にそれぞれ保持され、解放されなければならないC++

強い州から来た場合

答えて

1

強い==。

-(void)assign:(id) b to:(id) a { 
    if(b){ 
     [b retain]; 
    } 
    if (a){ 
     [a release]; 
    } 
    a = b; 

} 

2番目の質問に答えるために、objective-Cオブジェクトのサイズは構造体のように定義されていません。したがって、obj-Cクラスは値で保持することはできません。

obj-cとしてコンパイルされたobj-cクラス内のすべてのデータは、そのサイズが固定であると判断できるため、常に古い古いデータ型が格納されます。

8バイトのバッファを考えます。

最初の4バイトはintのためのもので、可変長文字列を使用すると実行時にオブジェクトのサイズが変わるため、これがうまくいかないか、文字列が割り当てられるかヒープとポインタに割り当てられます。

+0

ありがとう、私は実際にはC++を学んでいる学校にいるので、これはまだすべて新しくて、私にはあいまいですが、もっとゆっくり理解しています。 – Jordy

関連する問題