2012-04-19 9 views
3

ここに私の@interface defがあります。サムネイルクラスのinitWithAssetと呼ばれる方法で次にIOS NSStringプロパティ参照元クラスでは常にnilです

@synthesize imageCacheKeyBase; 

@interface Thumbnail : UIView <NSCoding>{ 
    NSMutableString *imageCacheKeyBase; 
} 
@property (nonatomic, copy) NSMutableString *imageCacheKeyBase; 
@end 

ここに私の@implementationだ

self.urlString = [[_asset.defaultRepresentation.url absoluteString] copy]; 
c = (char*)[urlString UTF8String]; 

while (*c != '=') 
    ++c; 
++c; 

self.imageCacheKeyBase = [NSString stringWithFormat:@"%s_", c]; 

そして、そのサムネイルallocingクラスには、サムネイルを参照しようとしたとき。 imageCacheKeyBaseは悪いことはありません。私はサムネイルのプロパティとしてスティック変数を取得するための100万の異なるアプローチを試みました。私は単純にself.imageCacheKeyBase = @ "dave"を試みました。 Nuthin '。私はそれが愚かだ知っているが、私は何をしようとしていた(保持し、保持して保持しようとしました。私も、単にプロパティのchar *作ってみました。

を、私はすべての日にこれを研究してきました。

ヘルプをしてください。

答えて

1

どこかダウンラインは、何かがnilである。各オブジェクトまたはデータ型の値をNSLoggingしてみてください。あなたが入力中=含めへのすべてを取得しようとしているよう

NSLog(@"My first string is %@, the char is %s, the final string is %@", [_asset.defaultRepresentation.url absoluteString], c, self.imageCacheKeyBase); 
+0

さて、最後に、Cの文字列がchar *であることを確認しました。 kerniganとrichieがC言語を夢見て以来、%sとchar *はピーナッツバターとゼリーのように一緒になっています。しかし、私の投稿は少し誤解を招くかもしれないと思います。 cはchar * cとして宣言されます。あなたは他の問題を見たと述べました。どのような? – user953175

0

に見えますURL。私はconvの代わりにお勧めします(あなたが言及していないこと、これを行うには十分な理由がない限り)UTF-8文字列にerting、あなたが何かの操作を行います。

self.urlString = [[_asset.defaultRepresentation.url absoluteString] copy]; 

NSRange range = [self.urlString [email protected]"="]; 
if (range.location != NSNotFound) 
{ 
    self.imageCacheKeyBase = [NSString stringWithFormat:@"%s=", [self.urlString subStringToIndex:range.location]; 
} 

を私はまた、このような.hの中imageCacheKeyBaseを宣言します

@property (nonatomic, retain) NSString *imageCacheKeyBase; 

変更が必要な場合を除き、変更可能にする必要がある場合は、上のスニペットで[NSString stringWithFormat...[NSMutableString stringWithFormat...に変更してください。このクラスで文字列を作成するので、保持するだけで済みます。これはコピーする方が望ましいです。

また、self.urlStringをコードスニペットで参照していますが、@interfaceで宣言されていません。 imageCacheKeyBaseを生成している間に、それを一時的なローカル変数にするつもりか?その場合は、上記に私のスニペットの最初の行を変更:

NSString* urlString = [_asset.defaultRepresentation.url absoluteString]; 

absoluteString autoreleaseの文字列なので、それを解放する必要はありませんが返されます。

関連する問題