2012-12-02 23 views
6

Hi tôi đã tìm kiếm ở đây trên diễn đàn nhưng không có sự giúp đỡ tìm thấy vì vậy tôi đang gửi nó mới. Đây là kịch bản, tôi đang tạo ra một mfmailcomposeviewcontroller trong rootviewcontroller chính, tôi đang hiển thị nó bằng cách gọi presentviewcontroller nhưng khi nó được sa thải tôi nhận được lỗi này:lỗi: địa chỉ không chứa một phần trỏ đến một phần trong một tập tin đối tượng

error: address doesn't contain a section that points to a section in a object file 

Mã tôi đang sử dụng được đưa ra dưới đây:

-(void) mailButtonTapped 
{ 

if ([MFMailComposeViewController canSendMail]) { 

    mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 

} 

else { 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sharing Not Possible" message:@"Configure your mail to send the mail" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alertView show]; 
    [alertView release]; 

    } 
} 

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 

NSString *title = @"Email"; 
NSString *msg = nil; 

if (result == MFMailComposeResultFailed) 
    msg = @"Unable to send, check your email settings"; 
else if (result == MFMailComposeResultSent) 
    msg = @"Email Sent Successfully!"; 
else if (result == MFMailComposeResultCancelled || result == MFMailComposeResultSaved) 
    msg = @"Sending Cancelled"; 

UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alertView show]; 
[alertView release]; 

[self dismissViewControllerAnimated:YES completion:nil]; 

}

Sau khi sa thải tôi nhận được lỗi:

error: address doesn't contain a section that points to a section in a object file 

Hãy giúp tôi

+0

Bạn đang sử dụng ARC? – Max

+0

không, tôi không sử dụng – kashif789us

+0

tôi đã cố gắng phát hành mailViewController sau khi bỏ quaviewviewcontroller nhưng không may mắn – kashif789us

Trả lời

-1

Việc hoàn thành dự kiến ​​một khối sẽ được gọi khi hoạt ảnh của loại bỏ được hoàn thành.

Chỉ cần xóa "hoàn thành: nil" và nó sẽ hoạt động!

Trân trọng.

+0

: không hoàn toàn ổn ... Không nên tạo sự cố trong bất kỳ trường hợp nào. – Nishant

15

Tôi cũng gặp lỗi này nhưng với một trường hợp khác. Tôi đã có một khối tài sản được xác định với @property (gán, nonatomic).

Để khắc phục sự cố này, tôi đã khai báo thuộc tính chặn của tôi với @property (bản sao, nonatomic).

Cheers

+0

Cảm ơn sự cố, hiển nhiên nhưng không thể tìm thấy nó một mình -_- ' –

+0

tôi gặp vấn đề tương tự và tôi đã khắc phục sự cố ngay bây giờ ..... cảm ơn –

0

Bạn có thể sử dụng nó như thế này:

MFMailComposeViewController *mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 
[mailViewController_ release]; 
0

Tôi cũng có vấn đề này nhưng do một lỗi rất ngớ ngẩn, tôi đã viết một tài sản được gọi frame trên một lớp kế thừa từ UIView (nó là một UITableViewCell nhưng tôi nghĩ điều này sẽ xảy ra với mọi lớp thừa hưởng từ UIView) điều này đã ghi đè lên thuộc tính frame ban đầu và gây ra lỗi này.

Cố định bằng cách thay đổi tên thuộc tính.

1

Lỗi này xảy ra khi một đối tượng/con trỏ đang được truy cập không tồn tại nữa. Và cũng có thể gây ra truy cập xấu khác, giá trị 0x00000 truy cập vv .. lỗi.

Vì vậy, bạn đang xóa/thả con trỏ, sau đó truy cập sau.

Từ nhìn vào mã, và đây chỉ là một đoán mà không gỡ lỗi, bạn đặt đại biểu của AlertView thứ hai để tự, nhưng sau đó ngay lập tức loại bỏ các điều khiển xem.

Hãy thử loại bỏ sau khi chế độ xem cảnh báo bị loại bỏ hoặc nút được nhấn hoặc có thể chỉ cần đặt ủy quyền AlertView cho 0.

Thậm chí nếu đó không phải là lỗi chính xác, lý do chính là ở đâu đó bạn đang phát hành một đối tượng sau đó cố gắng gọi một hàm hoặc truy cập nó.

Các vấn đề liên quan