急需纠正自己的错误认识,Mac开发和iOS开发UI显示、事件交互、生命周期等存在极大的差距

首先点击事件NSButton和UIButton完全是两个不同的东西

列表UITableView和NSTableView也是神似而已

最终点击事件选择的是继承NSView重写了MouseDown方法

@interface MouseDownActionButton : NSView

@property(nonatomic,copy)void (^responseForMouseDown)(void);

@end

@implementation MouseDownActionButton

-(void)mouseDown:(NSEvent *)event
{
if(self.responseForMouseDown)
{
self.responseForMouseDown();
}
} @end

读取文件分成两种情况,一种是开启了App沙盒(一般只能访问沙盒目录下文件),一种是没有开启App沙盒(可直接访问大部分文件)

沙盒模式下选取文件操作

-(void)letUserMakeFileChoose
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setPrompt: @"打开"];
openPanel.allowsMultipleSelection = YES;
openPanel.allowedFileTypes = @[@"mp4"];
openPanel.directoryURL = [NSURL fileURLWithPath:@"/Users/admin/Documents/xxxxx"];
_videoItemArray = [NSMutableArray array];
typeof(self) __weak weakself = self;
[openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode) { if (returnCode == ) {
typeof(weakself) __strong strongself = weakself;
[strongself.videoItemArray addObjectsFromArray:[openPanel URLs]];
if (strongself.videoItemArray.count > ) {
[strongself.view setNeedsLayout:YES];
}
}
}];
}

沙盒模式下,这里的文件在APP生命周期内拥有访问权限,重新启动APP将会失去访问权限,当然关闭沙盒之后就没有这个影响了

播放操作时,需要执行 [self.view setNeedsLayout:YES] 也就是重新布局播放层所在视图否则在下一次布局前无法显示出播放视图

#import "AppCommonSetting.h"

int main(int argc, const char * argv[]) {
if (argc > ) {
if (argv[][] == '') {
[AppCommonSetting shareSetting].shouldReChoose = YES;
}
}
return NSApplicationMain(argc, argv);
}

Main函数和iOS的差别也很大,在这里没有显式传入Delegate,在这里是创建了一个单例来存储命令行调用时的参数

这里命令行调用时不是执行的.app而是app包里面MacOS文件夹下的可执行命令行文件

 

最终是

cocoa开发Mac小试笔记的更多相关文章

  1. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

  2. 马上着手开发Mac应用程序

    你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...

  3. 转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber

    http://www.bubuko.com/infodetail-382485.html 标签:des   class   style   代码   html   使用   问题   文件   数据 ...

  4. 第一章 Andorid系统移植与驱动开发概述 - 读书笔记

    Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...

  5. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  6. Android开发艺术探索笔记—— View(一)

    Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...

  7. UWP开发入门系列笔记之(一):UWP初览

    标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...

  8. 《PHP与MySQL WEB开发》读书笔记

    <PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...

  9. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

    Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...

随机推荐

  1. Android Studio updating indices 一直刷新和闪烁

    Android Studio 更新到了 3.1.3 版本,在导入了工程以后,一直出现了 updating indices 刷新的情况,造成闪烁,在切换到其他视图以后,Android Studio 会一 ...

  2. 【Spark 深入学习 -09】Spark生态组件及Master节点HA

    ----本节内容------- 1.Spark背景介绍 2.Spark是什么 3.Spark有什么 4.Spark部署 4.1.Spark部署的2方面 4.2.Spark编译 4.3.Spark St ...

  3. ArcGIS Runtime SDK for iOS开发地图图层-图形图层

    注:本文翻译自:https://developers.arcgis.com/ios/objective-c/guide/creating-a-graphics-layer.htm        创建图 ...

  4. tomcat启动时非常慢,启动时 一直卡在Root WebApplicationContext: initialization completed

    每次重启自己的服务tomcat都需要卡住很长时间,每次都是日志停在 Root WebApplicationContext: initialization completed in 744 ms这个地方 ...

  5. 查看SQL SERVER数据库的连接数

    1,查看连接到‘TestDB2’数据库的连接 select * from master.dbo.sysprocesses where dbid = DB_ID('TestDB2') *查询某个数据库用 ...

  6. Git 推送操作

    Jerry 修改了他的最后一次提交的修改操作,他已经准备好将更改.推操作的数据永久存储的 Git 仓库.推操作成功后,其他开发人员可以看到Jerry 的变化. 他执行的git日志命令来查看提交的细节. ...

  7. Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)

    (1)rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名. (2)dense_rank函数返回一个唯一的值, ...

  8. Oracle 11g EM删除重建的方法

    虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,EM可以重建,于是也不打算查找原因了,直接使大招 OS:Windows Server 2012 Oracle:11g R2 ...

  9. irc

    https://www.irccloud.com/ webchat.freenode.net http://blog.csdn.net/wcc526/article/details/16993069 ...

  10. 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...