[英]convert SAFELY 64 bit app into a 32/64bit app
我創建了一個應用程序(我的第一個),啟用了ARC,分發(不在appstore上),並開始收到報告,它在某些mac上崩潰了。 在嘗試和用他們的幫助后,我們發現問題是他們有一個32位處理器。 所以我禁用了ARC,將構建設置為x86_64並收到大量錯誤消息。
所有這些都已經排序,現在我留下了大量的警告(黃色的)。 我擔心我會忘記一些事情並弄亂記憶。 在您看來,什么是最好的方式來獲得64位應用程序到32/64位應用程序而不忘記什么? 如果有許多mac與它不兼容,為什么ARC首先使用?
謝謝!
-----更新------
如:reuquested:
Update to recommended settings
Property 'delegate' requires method 'delegate' to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation
Property 'delegate' requires method 'setDelegate:' to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation
'__bridge' casts have no effect when not using ARC
Variable 'loc_tip' is used uninitialized whenever 'if' condition is false
Variable 'loc_tip' is used uninitialized whenever '&&' condition is false
Conflicting parameter types in implementation of 'tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:': 'NSInteger' (aka 'int') vs 'long'
前方粗糙的水
所有這些都已經排序,現在我留下了大量的警告(黃色的)。
打開警告級別。 解決所有問題。
我擔心我會忘記一些事情並弄亂記憶。
在您看來,什么是最好的方式來獲得64位應用程序到32/64位應用程序而不忘記什么?
考慮到問題,擔心是自然的。
一個快速解決方法是使用ObjC啟用垃圾收集。 這樣做並相信它只會工作,沒有額外的更改是一個錯誤(讀:你應該留出大量的時間進行測試和尋找bug)。
另一種方法,如果你真的想要32和64的良好支持,將是使用MRC - 但你應該只承諾在這種情況下32位和64位的MRC(沒有ARC)。 當然,這需要大量的審查,修復,手動測試和泄漏測試(除非您的程序很小)。 對於具有良好長期支持和高質量標准的應用程序,這是IMO的首選解決方案。
如果有許多mac與它不兼容,為什么ARC首先使用?
實際上並沒有很多需要32位的mac。 如果您今天發布了1.0,那么您應該只考慮將其設為64位。
如果需要的話,應該從開發開始就支持和測試32位 - ARC選項或32位很早就會被淘汰。 這種疏忽似乎很難通過測試和開發。
更新為推薦設置
點擊“驗證設置”,查看,執行更改。
屬性'委托'需要定義方法'委托' - 使用@synthesize,@ dynamic或在此類實現中提供方法實現
回音警告信息
屬性'委托'需要定義方法'setDelegate:' - 使用@synthesize,@ dynamic或在此類實現中提供方法實現
回音警告信息
不使用ARC時,'__ bridge'強制轉換無效
在這種情況下你只需要使用c風格的演員表
當'if'條件為假時,變量'loc_tip'被使用為未初始化
ARC為您做到了這一點。 做ARC會做的事情:
NSSomething * loc_tip = nil;
當'&&'條件為假時,變量'loc_tip'未初始化
回應之前的回應
'tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:':'NSInteger'(又名'int')vs'long'的實現中存在沖突的參數類型
選擇器的聲明不匹配 - 從標頭( NSTableView.h
)復制聲明,並查看(參數類型的)更改是否需要對您的實現進行任何其他更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.