2012-03-04 25 views
5

Tôi đang cố gắng kết hợp dự án bit of code này vào một dự án (iOS 5) mới ... Vấn đề là tôi đang sử dụng ARC và REALLY không thích mã được viết.Lỗi ARC của iOS5: SKPSMTPMessage

Tôi đã có thể giải quyết hầu hết các lỗi, nhưng tôi bị mắc kẹt với 3 lỗi mà tôi không thể tìm ra.

Lỗi # 1:

Ivar hiện 'đại biểu' cho bất động sản unsafe_unretained 'đại biểu' phải _unsafe_unretained

.h

@interface SKPSMTPMessage : NSObject { 
    NSOutputStream *outputStream; 
    NSInputStream *inputStream; 

    id <SKPSMTPMessageDelegate> delegate; 
} 

@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate; 

.m

@synthesize login, pass, relayHost, relayPorts, subject, fromEmail, toEmail, parts, requiresAuth, inputString, wantsSecure, \ 
delegate, connectTimer, connectTimeout, watchdogTimer, validateSSLChain; 

lỗi # 2 & # 3:

địa Đi qua các đối tượng phi địa phương để _autoreleasing tham số cho ghi lại

.h

@interface SKPSMTPMessage : NSObject { 
    NSOutputStream *outputStream; 
    NSInputStream *inputStream; 

    id <SKPSMTPMessageDelegate> delegate; 
} 

. m

[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream]; 

Mọi hướng dẫn sẽ được đánh giá cao.

Cảm ơn.

+0

Có một cái nhìn tại http: // stackoverflow.com/questions/8138902/existing-ivar-delegate-for-unsafe-unretained-property-delegate-must-be-un –

Trả lời

6

Tôi đã tìm được giải pháp phù hợp cho câu hỏi này.

Câu trả lời là: Đừng làm phiền việc chuyển đổi mã theo cách thủ công.

Bạn chỉ cần thêm trình biên dịch cờ -fno-objc-arc đến các lớp học nhập khẩu

enter image description here

0

Lỗi # 1
Replase

@property(nonatomic, assign) id <SKPSMTPMessageDelegate> delegate; 

Để

@property(nonatomic, _unsafe_unretained) id <SKPSMTPMessageDelegate> delegate; 

Bạn không thể sử dụng assign với ARC

Lỗi # 2,3
Cố gắng không phải allocinitoutputStreaminputStream biến.

NSInputStream *inputStream; 
NSOutputStream *outputStream; 
[NSStream getStreamsToHostNamed:relayHost port:relayPort inputStream:&inputStream outputStream:&outputStream]; 
+0

Cảm ơn ... Tôi thực sự đã kết thúc việc vô hiệu hóa ARC cho thư viện đó. – dbarrett

+0

Bất cứ khi nào tôi vô hiệu hóa ARC cho tệp "SKPSMTPMessage.m" của tôi (giả sử vô hiệu hóa là điều sẽ xảy ra khi bạn thêm Cờ biên dịch "-fno-objc-arc") Tôi chỉ nhận được Lỗi liên kết Apple Mach-O nói rằng có một biểu tượng trùng lặp tìm. Bạn có lỗi này không? Nếu vậy làm thế nào bạn có được vòng nó? !!? Và nếu không, tôi đang làm gì sai? Matt –