将字符串从 Swift 传递到 objective C 的问题
Issue passing a string from Swift to objective C
这是MyObjCClass.h中用户名的声明:
@property (nonatomic, assign, readwrite) NSString* username;
这就是我在 MyViewController.swift 中影响它的方式:
// MyObjCObject.username = NSString(string: "homerSimpson") // not accepted by xCode : 'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert ?
MyObjCObject.username = "homerSimpson"
这就是我在 MyObjCClass.m 中使用属性的方式:
NSLog(_username) // running error happens here
错误:
ECX_BAD_ACCESS : (code=1, address=0x0)
您不想使用 assign
作为指向对象的指针。您需要将 assign
更改为 strong
或 weak
(或者完全忽略它,我认为默认为 strong
),具体取决于您想要的内存管理类型对于对象。
此外,这不是您要使用的方式 NSLog
。你需要更像这样使用它:
NSLog(@"%@", _username);
这是MyObjCClass.h中用户名的声明:
@property (nonatomic, assign, readwrite) NSString* username;
这就是我在 MyViewController.swift 中影响它的方式:
// MyObjCObject.username = NSString(string: "homerSimpson") // not accepted by xCode : 'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert ?
MyObjCObject.username = "homerSimpson"
这就是我在 MyObjCClass.m 中使用属性的方式:
NSLog(_username) // running error happens here
错误:
ECX_BAD_ACCESS : (code=1, address=0x0)
您不想使用 assign
作为指向对象的指针。您需要将 assign
更改为 strong
或 weak
(或者完全忽略它,我认为默认为 strong
),具体取决于您想要的内存管理类型对于对象。
此外,这不是您要使用的方式 NSLog
。你需要更像这样使用它:
NSLog(@"%@", _username);