小编She*_*eni的帖子

在iPhone/iPad上正确使用宏#define

我一直在阅读有关在iOS中使用#define宏的相互矛盾的信息,以及它们是仅在编译时运行还是在运行时运行.

考虑我的情况:我想定义一个返回BOOL的宏,该BOOL与屏幕是大尺寸还是小尺寸有关,这里是代码:

#define TTThisScreenWidth [[UIScreen mainScreen] bounds].size.width
#define TTLargeScreenTrushHold 700.0f
#define TTScreenIsOfLargeSize (TTThisScreenWidth > TTLargeScreenTrushHold)
Run Code Online (Sandbox Code Playgroud)

问题:如果此代码仅在编译时运行,则屏幕大小将在编译到的设备上修复,并且在具有不同屏幕的设备上运行时不返回正确的答案.

但是:我检查了它,它在iPad上完美运行,最初编译为iPhone(通用应用程序)

所以:不安全吗?

谢谢!

iphone macros xcode objective-c ipad

2
推荐指数
1
解决办法
800
查看次数

将指针从单例设置为viewController并更新GUI违反MVC

我想问一个关于良好代码实践和MVC模型的理论问题,以下是这种情况:

该设计包含一个RootViewController和一个单例类.单例充当控制器,具有应在整个应用程序中可用的计时器对象.计时器对象由UISwitch和NSTimer组成,它们都由单例控制器拥有,因此可以根据需要将UISwitch添加到新的viewControllers,并且可以在整个应用程序中访问计时器对象.

为了使用当前计时器的计数更新RootViewController的屏幕,我在RootViewController的单例中创建了一个指针,并让RootViewController将自己设置为该指针,类似于[singeltonOBject setDelegate:self].使用此设计,当计时器滴答时,可以从单例访问和更新RootViewController的UILabel.我选择这样做是因为我没有时间实施常规代表.

请注意,RootViewController由AppDelegate拥有,单例类显然不归RootViewController所有.因此没有保留周期.

问题:从单例到RootViewController的指针设置和从单例控制器更新UILable是否违反了良好的编码习惯,是否有任何基本原则未得到满足?

感谢您的回答!

iphone singleton design-patterns objective-c ios

1
推荐指数
1
解决办法
132
查看次数

标签 统计

iphone ×2

objective-c ×2

design-patterns ×1

ios ×1

ipad ×1

macros ×1

singleton ×1

xcode ×1