EMCLoginItem
EMCLoginItem
是一个 Objective-C 库,用于查询、添加和删除苹果 OS X 中的登录项。
用法
可以使用提供的任意一个 init
方法或提供的工厂方法(loginItem*
)来创建 EMCLoginItem
的实例。这些方法具有以下方法签名
- (instancetype)init;
- (instancetype)initWithBundle:(NSBundle *)bundle;
- (instancetype)initWithPath:(NSString *)path;
当使用不带参数的初始化器时,主程序的程序包路径将用作登录项 URL
[[NSBundle mainBundle] bundlePath];
另外,也可以使用其他两个初始化器来手动提供用于作为登录项 URL 的程序包或路径。
EMCLoginItem
类实现的以下方法是:
- (BOOL)isLoginItem;
- (void)addLoginItem;
- (void)removeLoginItem;
- (void)addAfterLast;
- (void)addAfterFirst;
- (void)addAfterItemWithPath:(NSString *)path;
- (void)addAfterBundle:(NSBundle *)bundle;
- (void)setIconRef:(IconRef)iconRef;
前三个方法用于分别查询、添加和从当前用户的指定 URL 添加或删除登录项,如下面的示例所示
if (![loginItem isLoginItem])
{
[loginItem addLoginItem];
}
可以使用 addAfter*
方法让调用者指定登录项将被添加的位置
addAfterLast
将登录项添加到项目列表的末尾。addAfterFirst
将登录项添加到项目列表的开头。addAfterItemWithPath
将登录项添加到具有指定路径的项目之后,如果该项目存在,否则添加到列表末尾。addAfterBundle
将登录项添加到具有指定程序包的项目之后,如果该项目存在,否则添加到列表末尾。
使用 setIconRef
路径用来传递一个 IconRef
实例,将其用作要添加的登录项的自定义图标。此方法只有在要设置的值与当前存储的值不同时(最初为 nil,如果非 nil 则释放)才会通过调用 AcquireIconRef
方法将 IconRef 引用计数增加 1。 dealloc
方法会通过调用 ReleaseIconRef
方法来释放非空 IconRef 引用。
先决条件
此库需要 ARC(自动引用计数)支持,如果不支持 ARC,则编译会失败。
使用 CocoaPods 安装
EMCLoginItem
也可以通过 CocoaPods 获得,可以在 Podfile 中添加对它的依赖。
pod 'EMCLoginItem', '~> 1.0'
安装
EMCLoginItem
被打包和分发为 框架。希望从源代码编译它的开发者可以使用 XCode(源代码中包含名为 EMCLoginItem.xcodeproj
的项目)或 xcodebuild
。一旦安装了框架,就可以从任何其他 XCode 项目中引用和链接它。
将公共框架安装到 /Library/Frameworks
的最佳位置,因为该位置的框架会由编译器和动态链接器自动发现(参见 Apple 的 框架编程指南)。
使用 xcodebuild
并将 /
指定为 DSTROOT
是在 /Library/Framework
中安装或升级 EMCLoginItem
的最简单方法。
$ sudo xcodebuild install DSTROOT=/
作为替代,您可以使用每天都可下载的二进制包来安装框架。
请注意,由于该包未签名,您必须在 系统偏好设置 的 安全和隐私 部分临时允许从 任何地方 下载的应用程序安装。
许可
EMCLoginItem
在 BSD 3-Clause License 下授权。
版权所有 (C) 2014, Enrico M. Crisostomo。保留所有权利。
允许以源代码和二进制形式重新分发和使用,无论是否修改,前提是满足以下条件。
-
源代码的重新分发必须保留上述版权声明、本条款列表以及以下免责声明。
-
二进制形式的重新分发必须在文档和/或随分发提供的其他材料中重新生产上述版权声明、本条款列表和以下免责声明。
-
未经特定书面的事先许可,不得使用版权持有者的名称或贡献者的名称来代言或推广源自本软件的产品。
本软件由版权所有者和贡献者提供,"现状"如故,任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的保证,均予以否认。在任何情况下,版权所有者或贡献者都不应对因使用此软件而引起的任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是基于合同、严格责任还是侵权(包括疏忽或其他),即使事先已告知此类损害的可能性。