考虑以下功能
CGSize CGSizeIntegral(CGSize size)
{
return CGSizeMake(ceilf(size.width), ceilf(size.height));
}
Run Code Online (Sandbox Code Playgroud)
CGSize实际上由两个CGFloats 组成,并CGFloat根据体系结构改变定义:
typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit
Run Code Online (Sandbox Code Playgroud)
因此,上面的代码在64位系统上是错误的,需要更新类似的东西
CGSize CGSizeIntegral(CGSize size)
{
#if 64_bit
return CGSizeMake(ceil(size.width), ceil(size.height));
#else
return CGSizeMake(ceilf(size.width), ceilf(size.height));
#endif
}
Run Code Online (Sandbox Code Playgroud)
肯定有一个编译器宏/常量(INTEL_X86例如我们可以使用Mac ),但我无法在64位转换指南中找到它.
如何确定正在构建的体系结构?
我在打电话
[[NSWorkspace sharedWorkspace] launchApplication:path];
Run Code Online (Sandbox Code Playgroud)
从我的沙盒应用程序,我在控制台中收到此错误:
9/5/11 12:23:12.462 PM lsboxd:拒绝为21383产生<PATH删除> - 原因-10826
9/5/11 12:23:12.463 PM App:spawn_via_launchd()失败,错误= 54 label = [0x0-0x1994993] .MYApp path = <PATH REDACTED> flags = 0
9/5/11 12:23:12.464 PM应用程序:LSOpenFromURLSpec()为应用程序<PATH REDACTED>(null)返回-10810.
换句话说,我显然被"启动服务沙箱守护进程"(lsboxd)阻止,它不认为应用程序1应该启动应用程序2.
对于记录10826是"用户没有启动应用程序的权限"然后10810是"发生未知错误"
有没有人知道这个案子的权利?
如何从沙盒应用程序启动其他应用程序(请不要说AppleScript - 这是一个无法运作的噩梦,尤其是从沙盒应用程序或XPC服务调用时).理想的方法是在沙箱中使用(严重残缺的)NSWorkspace.
问题
我有一组地标信息(国家,城市等)和一对Lat/Lon对.我想用它来创建一个MKPlacemark对象.
讨论
看来这个类只能通过创建
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary
Run Code Online (Sandbox Code Playgroud)
其文档陈述了州
您可以为已有地址信息的实体手动创建地标对象,例如地址簿中的联系人.明确地创建地标对象避免了查询反向地理编码器对象以获取相同信息的需要.
完善!我已经进行了反向地理编码,并希望避免这样的查询.我可以在字典中添加什么?
有关可用于此字典键的字符串列表,请参阅ABPerson Reference中的"Address Property"常量.所有键都应该在词典的顶层.
其中显示相关键
const ABPropertyID kABPersonAddressProperty;
const CFStringRef kABPersonAddressStreetKey;
const CFStringRef kABPersonAddressCityKey;
const CFStringRef kABPersonAddressStateKey;
const CFStringRef kABPersonAddressZIPKey;
const CFStringRef kABPersonAddressCountryKey;
const CFStringRef kABPersonAddressCountryCodeKey;
Run Code Online (Sandbox Code Playgroud)
这远远落后于MKPlacemark的基本特征:
访问位置数据
访问地标属性
访问地理信息
访问地标信息
幸运的是,MKPlacemark超类的实际头文件说明了地址字典:
// address dictionary properties
@property (nonatomic, readonly) NSString *name; // eg. Apple Inc.
@property (nonatomic, readonly) NSString *thoroughfare; // street address, eg. …Run Code Online (Sandbox Code Playgroud) 任何使用过两者的评论都可以评论"有什么区别,什么时候应该使用另一个?" 我花了最近几天将DocInteraction示例中的代码调整到我自己的应用程序中,我对这两个套件越熟悉,我看到它们之间的差异越小:
除了工具栏的颜色之外,我在它们之间切换时没有看到任何差异.
当然我错过了一些东西(或者其他一些错误).有什么想法吗?
如果我有一个php脚本在MySQL连接上调用INSERT,UPDATE,DELETE等,并且该脚本在POST操作的不受控制的时间被调用,它是否总是"安全"(即不会导致损坏的表或冲突)在请求期间)?
例如,如果在1秒的时间段内发出500个请求.
如果是这样,php/mysql如何实现这一目标?
如果没有,那么需要做些什么来保证"串行"访问或安全的同时访问?
我有一个应用程序,它是一个通用文件管理器.我想在使用QLPreviewController,UIDocumentInteractionController等的应用程序中存在"Open in ..."功能,以便能够向我的应用程序发送任何文件类型.
我创建了一个文档类型但是"类型"是否设置为"*","public.*"或类似组合我无法让应用程序显示非特定情况(如果我更改了它,它确实有效) UTI到com.adobe.pdf,例如).
在Mac OS X上,可以将应用程序设置为所有文件类型的通用查看器 - 这在iOS上是不可能的?
编辑
通过文档,我发现只有少数原始UTI类型,其他所有类型都继承
public.item
public.content
public.database
public.calendar-event
public.message
public.contact
public.archive
public.url-name
public.executable
com.apple.resolvable
Run Code Online (Sandbox Code Playgroud)
其中许多显然永远不会成为文件的实例.
我可能过于雄心勃勃地试图创建一个通配符测试:我尝试使用public.item并且它通过邮件处理pdf文件.由于文档声明public.item是"物理层次结构的基本类型",这可能意味着这是通配符,即"public.item =*"
最糟糕的情况是,我可以添加项目,内容,数据库和存档,并希望最好.最佳案例场景,项目涵盖了一切.
在Mac上,人们可以随时mouseUp:通过调用获取鼠标"在事件流之外"的位置(即,即使您没有为其他人订阅任何委托方法)[NSEvent mouseLocation].
iOS上有什么方法可以在不收听的情况下获取当前的触摸事件touchesBegan:吗?
我问,因为至少有一种情况是没有调用touchesBegan:在app启动时,如果触摸已经在进行中,则touchesBegan永远不会被调用.实际上,也没有任何触摸相关的UIEvent方法被称为尽可能接近(sendEvent:显然也不是UIApplication的/ UIWindow ).
我想根据启动时是否正在进行触摸来稍微改变我的应用程序的行为. 有没有办法检测应用程序启动时正在进行的触摸?
实现跟踪触摸的平滑倒车动画的最佳方法是什么?我指的是那些动画,其中,例如,如果用户执行滑动手势,一些元素在屏幕上平滑地动画,而其他元素关闭,但如果用户反而慢慢地来回拖动平移手势,则相同的对象将向前移动/按照触摸位置向后移动百分比.这可以在许多应用程序介绍中看到,也可以在转换中看到.我已经找到
我不掌握-我习惯使用CAAnimations和手势-是怎样的东西既可以是动画 和 互动.
通常,当我创建动画时,我提交动画,它从头到尾.虽然我可以在触摸继续时中断动画,但这似乎是笨拙的.
另一方面,响应用户输入移动事物很容易,但这不是动画.
如果某些内容可以根据动画发生变化,效果如何,但同样的动画也会出现与触摸相关的动画,但仍然可以使动画达到完成时不会真正"完成"(变得不可逆转) )除非用户释放触摸,否则在交互期间的任何时刻如果用户释放平移,则动画要么返回到其起始位置,要么根据最后的触摸位置和速度动画到完成.这些要求令人费解.
这种技术我看到所有的一瞥涉及关键帧动画,但我不明白的是,其中的触摸事件与动画相交创建这些顺滑的效果我看.
我们非常欢迎任何提示,示例或教程.
因此,NSSavePanel当前返回带有扩展名的文件URL,您的应用程序有权写入该文件.
有没有办法允许用户选择要写入的目录?例如,如果应用程序一次导出十几个图像,则用户不会事先指定名称.
我正在尝试在objc_setAssociatedObject中使用密钥,如下所示:
如何在对象中使用objc_setAssociatedObject/objc_getAssociatedObject?
我有一个定义的MyConstants.h文件
static NSString *myConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)
然后,此文件通过MyFramework.h包含在MyFramework中
#import ...;
#import "MyConstants.h"
#import ...;
Run Code Online (Sandbox Code Playgroud)
然后在我的项目中,框架通过.pch标头包含在所有文件中.
#import <Cocoa/Cocoa.h>
#import <MyFramework/MyFramework.h>
Run Code Online (Sandbox Code Playgroud)
这一切都按预期工作.问题是当我用myConstant作为键调用objc_setAssociatedObject或objc_getAssociatedObject时,它不起作用.原因很明显,从日志中可以看出:
- (void)doSomething:(id)key { //Gets called with myConstant
NSLog(@"Associating with key at %p", &key);
objc_setAssociatedObject(self, &key, object, policy);
}
- (void)doSomethingElse:(id)key { //Gets called with myConstant
NSLog(@"Seeking association for key at %p", &key);
NSLog(@"Will find %@", objc_getAssociatedObject(self, &key));
}
Run Code Online (Sandbox Code Playgroud)
哪些日志:
Associating with key at 0x7fff5fbfecdf
Seeking association for key at 0x7fff5fbfecef
Will find (null)
Run Code Online (Sandbox Code Playgroud)
你会注意到指针移动了.
但是,再次调用相同的方法会显示相同的指针.就像常量IS是一个常量,在导入它的文件中,但不是整个项目.
问:如何正确定义和导入包含常量的标题,以便常量实际上在内存中的常量位置?
ios ×6
cocoa ×3
cocoa-touch ×2
32bit-64bit ×1
ios7 ×1
mysql ×1
nsworkspace ×1
objective-c ×1
php ×1
sandbox ×1
uievent ×1
uitouch ×1
uti ×1