我在Objective-C的一個框架,這個結構:轉換或比較「非託管<NSString>和NSString的
VehicleClass.h
struct VehicleStruct
{
__unsafe_unretained NSString *const CAR;
__unsafe_unretained NSString *const MOTORCYCLE;
__unsafe_unretained NSString *const TRUCK;
};
VehicleClass.m
#import "VehicleClass.h"
const struct VehicleStruct Vehicle = {
.CAR = @"CAR",
.MOTORCYCLE = @"MOTORCYCLE",
.TRUCK = @"TRUCK"
};
並在我的Contansts.h
extern const struct VehicleStruct Vehicle;
好了,現在我想在我的proyect拿到車的價值使用迅速:
let carValueSwift = String(Vehicle.CAR)
在控制檯:
"Unmanaged NSString(_value: CAR)"
我該如何解決這個問題?我需要像NSString這樣的值,因爲如果那麼我想在我的框架中比較:
["CAR" isEqual: carValueSwift]
沒有用。
非常感謝您
任何原因,你正在使用'__unsafe_unretained',而不是'weak' ? – JAL
__weak給出下一個錯誤:ARC禁止在struct – Patrick
中使用Objective-C對象當然,你不能在結構中使用'weak'。 – JAL