2013-02-22 44 views
7

Tôi đã được hỏi một câu hỏi, điều gì sẽ xảy ra khi một khuôn khổ vô tình bị xóa khỏi thiết bị của bạn có thể là iphone hoặc mac?Điều gì sẽ xảy ra nếu khung bị xóa khỏi ứng dụng?

Cho dù ứng dụng của bạn gặp sự cố hay nó sẽ hoạt động mà không có bất kỳ lỗi nào?

Vui lòng cung cấp cho tôi câu trả lời kèm theo giải thích.

+0

Nếu đây là một câu hỏi công việc-cuộc phỏng vấn bạn có thể muốn thêm thẻ công việc-cuộc phỏng vấn. Nó tồn tại nhưng chưa được sử dụng. Nó có thể hữu ích nếu một số câu hỏi sẽ được đánh dấu như vậy. (chỉ là một ý kiến) –

+0

@rokjarc Chúng tôi không còn sử dụng thẻ đó nữa; nó không liên quan đến lập trình, thực sự. Hãy suy nghĩ về các thẻ như là một cái gì đó mà một lập trình viên sẽ có chuyên môn và muốn 'theo dõi' để tìm câu hỏi. –

+0

@Anoop xem nhận xét của tôi ở trên; Tôi đang xóa thẻ câu hỏi phỏng vấn. –

Trả lời

4

Bạn có thể gặp phải lỗi liên kết. Nếu thư mục khung bên trong ứng dụng có nghĩa là liên kết thời gian chạy của nó.

OS X nhúng "tên cài đặt" bên trong mỗi thư viện động. Tên cài đặt là đường dẫn đến nơi thư viện có thể tìm thấy khi dyld cần tải nó. Khi bạn tạo ứng dụng liên kết với thư viện động , tên cài đặt này được sao chép vào ứng dụng nhị phân . Khi ứng dụng chạy, tên cài đặt được sao chép là được sử dụng để định vị thư viện hoặc khung công tác.

$ otool -D /Applications/Google\ Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python 
    /Applications/Google Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python: 
    @executable_path/../Frameworks/Python.framework/Versions/2.6/Python 

vì vậy nếu bạn sẽ xóa Khung thư mục mà bạn sẽ nhận được Dyld Lỗi.

Dyld Error Message: 
    Library not loaded: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle 
    Referenced from: /Applications/Transmission.app/Contents/MacOS/Transmission 
    Reason: image not found 

enter image description here

enter image description here

1

Nếu khuôn khổ bị xóa, chỉ phần mềm liên kết đến khung đó sẽ bị ảnh hưởng. Nếu nó là một khung hệ thống, mong đợi hệ thống của bạn bắt đầu thất bại. Nếu đó là khuôn khổ của bên thứ 3, nó sẽ bị giới hạn trong phạm vi tác động. Nếu nó nằm trong gói ứng dụng của bạn và ứng dụng của bạn được ký mã, việc xóa khung đi kèm sẽ ngăn ứng dụng của bạn khởi chạy.

0

Tùy thuộc vào ứng dụng có cần truy cập vào khung bạn đã xóa hay không. Nếu ứng dụng của bạn yêu cầu khung thì nó sẽ không biên dịch. Nếu bạn không cần nó, nó sẽ chỉ biên dịch như bình thường.

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