在 main.m 讀取字串 (如命令列參數),欲賦值給自定類別 CHBLetter 的屬性,但編譯報錯或執行無效果。
Objective-C 物件必須先 alloc/init 才能使用。僅宣告類別指標 CHBLetter *letter; 不會自動建立物件。
#import
#import "CHBLetter.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 1. 從參數或輸入取得字串
NSString *inputStr = @"來自 main 的字串"; // 範例
if (argc > 1) {
inputStr = [NSString stringWithUTF8String:argv[1]];
}
// 2. 【關鍵】建立 CHBLetter 實例
CHBLetter *letter = [[CHBLetter alloc] init];
// 若有自定初始化方法:[[CHBLetter alloc] initWithString:inputStr];
// 3. 設定屬性 (假設屬性名為 content)
letter.content = inputStr;
// 或呼叫方法:[letter setContent:inputStr];
// 4. 後續使用 letter...
NSLog(@"Letter content: %@", letter.content);
}
return 0;
}
@interface CHBLetter : NSObject
@property (nonatomic, copy) NSString *content; // 建議 copy 修飾 NSString
- (instancetype)initWithString:(NSString *)str;
@end
letter.content = ...,需手寫 setter。#import "CHBLetter.h"。NSString 屬性建議用 copy 防止外部可變字串 (NSMutableString) 影響內部狀態。總結:先 alloc/init 建立實例,再透過屬性或方法傳遞字串。