我試圖給我所有的意見一個新的屬性,稱爲newProperty
。 由於所有的視圖都會有它,所以將它添加到超類中會更有意義。 在這種情況下,我想添加newProperty
到UIView
,以便所有的UIView
子類(UIWindow
,UIPickerView
,UITabBar
等)都將繼承它。 那可能嗎?將屬性添加到超類UIView
1
A
回答
3
當你的財產需要支持實例變量,你可以使用相關的對象:
How do I use objc_setAssociatedObject/objc_getAssociatedObject inside an object?
What is objc_setAssociatedObject() and in what cases should it be used?
http://darkdust.net/writings/objective-c/attaching-objects
...但你可能要通過覺得這在投入使用之前。
當你的財產不需要實例變量時,請參閱盧克的答案。
1
在UIView上寫一個類別。
在Xcode中,進入文件 - >新建 - >文件,然後從iOS部分的Cocoa Touch行中選擇「Objective-C Category」。確保類別在UIView上,給它一個名字,你就不在了。
從這裏開始,您可以添加屬性或實例方法,假設您在應用程序的前綴文件中導入類別,則所有從UIView繼承的類都可以訪問。
編輯:我沒有使用關聯的對象。這是一個非常簡單的示例,它使用已存在於對象中的預定義屬性,使用我自己的屬性來簡化其檢索。
OP沒有說明他們希望添加到UIView中的屬性是什麼,這就是爲什麼我假設一個類別就足夠了。我確定你對下面的評論全部正確:re:數據存儲在一個真正自定義的屬性上。
我不欣賞downvotes,實際上OP的目標還沒有做得非常清楚,關於他們的「newProperty」的使用。
eg:UIView上的類別叫做Position。 (UIView + Position)
UIView+Position.h
@interface UIView (Position)
-(CGFloat)left;
-(CGFloat)right;
-(CGFloat)top;
-(CGFloat)bottom;
@property (nonatomic) CGFloat left;
@property (nonatomic) CGFloat right;
@property (nonatomic) CGFloat top;
@property (nonatomic) CGFloat bottom;
@end
UIView+Position.m
#import "UIView+Position.h"
@implementation UIView (Position)
-(CGFloat)left
{
return self.frame.origin.x;
}
-(CGFloat)right
{
return self.frame.origin.x + self.frame.size.width;
}
-(CGFloat)top
{
return self.frame.origin.y;
}
-(CGFloat)bottom
{
return self.frame.origin.y + self.frame.size.height;
}
@end
相關問題
- 1. Magento 1.7將屬性添加到類別
- 2. 將類添加到其他屬性
- 3. Uml-Designer:將java.net.URL屬性添加到類
- 4. 將「屬性」或類添加到變量
- 5. 幫助將屬性添加到LinqToSql類
- 6. ArrayIndexOutOfBoundsException將屬性添加到常規類
- 7. 將屬性動態添加到類C#
- 8. 將動態屬性添加到.NET類
- 9. 將屬性添加到關聯類ManyToMany
- 10. 將DebuggerStepThrough屬性添加到類
- 11. 將異常屬性添加到類中?
- 12. 將形狀添加到類屬性
- 13. 將屬性添加到現有類
- 14. 超類中的屬性添加help_text
- 15. 將屬性添加到屬性
- 16. Magento將Sub屬性添加到屬性?
- 17. 將屬性添加到TTPhoto
- 18. 將屬性添加到Q_PROPERTYs
- 19. 將屬性添加到IXmlNode
- 20. 將屬性添加到TreeNode
- 21. 將屬性添加到UITableViewCell
- 22. 將屬性添加到DataColumn
- 23. 將屬性添加到BehaviorExtensionElement
- 24. 將屬性添加到wp_get_attachment_image
- 25. 將屬性添加到EventArgs
- 26. 將屬性添加到GeoJSON
- 27. 將多個UIImageView添加到子類UIView
- 28. 使用屬性編輯器將屬性添加到類
- 29. 如何將XML屬性和值添加到[XMLElement]類屬性?
- 30. 如何將屬性添加到一個基類的屬性
類別可以向類添加方法,但不能添加屬性。這是因爲類別不能爲getter和setter添加後備存儲/ ivar來操作。 –
你不能添加'iVars'。請參閱:http://stackoverflow.com/q/6162589/667586 http://stackoverflow.com/a/6162619/667586 –
這將允許您聲明和定義實例方法(包括屬性聲明),但它確實不允許存儲(例如,在實現類別時綜合屬性是錯誤的)。 – justin