首页
学习
活动
专区
圈层
工具
发布

OS X开发NSMenu应用详解 原

OS X开发NSMenu应用详解 一、引言     NSMenu在Mac桌面软件开发中往往有3个方面的应用,作为程序的主菜单栏使用,作为视图邮件菜单使用和作为Dock菜单使用。...Storyboard里面会自动创建一个菜单栏,你可以自行在菜单中进行增删改操作,菜单中的Item触发方法也可以直接与AppDelegate进行关联,实现自定义的菜单逻辑,如图: ?...:@""]; NSMenu * subMenu = [[NSMenu alloc]initWithTitle:@"subMenu"]; NSMenuItem * item4 = [[NSMenuItem...五、NSMenuItem详解     NSMenuItem是菜单中的每一个菜单选项对象,其中常用属性方法如下: //设置是否启用用户快捷键 + (void)setUsesUserKeyEquivalents...property (nullable, strong) NSMenu *submenu; //如果此Item是某个子菜单中的,此属性获取与子菜单关联的父item @property (nullable,

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++中自定义结构体或类作为关联容器的键

    概述 STL中像set和map这样的容器是通过红黑树来实现的,插入到容器中的对象是顺序存放的,采用这样的方式是非常便于查找的,查找效率能够达到O(log n)。...所以如果有查找数据的需求,可以采用set或者map。 但是我们自定义的结构体或者类,无法对其比较大小,在放入到容器中的时候,就无法正常编译通过,这是set/map容器的规范决定的。...要将自定义的结构体或者类存入到set/map容器,就需要定义一个排序的规则,使其可以比较大小。...最简单的办法就是在结构体或者类中加入一个重载小于号的成员函数,这样在存数据进入set/map中时,就可以根据其规则排序。 2....<< endl; } else { cout << "可以找到点" << endl; } } } 其中的关键就是在点的结构体中重载了

    2.7K20

    Python函数中单独一个星号或斜线作为形参的含义

    在函数定义时,位于*parameter或单独一个星号*之后的所有参数都只能以关键参数的形式进行传值,不接收其他任何形式的传值。...,会发现sum()函数的最后一个参数是斜线,实际上这个斜线并不是sum()函数的参数,只是用来表明这个函数只接收位置参数,而不允许以关键参数的形式进行传值,如果遇到其他函数或对象方法显示这样的帮助文档也表示同样的含义...这样的函数是用C开发的,并对参数传值形式做的要求,在Python中并不允许定义这样的函数。感谢浙江温州永嘉县教师发展中心应根球老师提供的参考资料。...这涉及到“Argument Clinic”的概念,感兴趣的朋友可以查阅有关资料。...start=4)#不允许使用关键参数,引发异常 TypeError: sum() takes no keyword arguments >>> def demo(a, b, /): #在Python中不允许这样定义函数

    3.7K60

    OS X 上使用.NET开发应用程序

    文件则是MonoDevelop根据xib文件中的标记所自动创建的C#代码,在绝大部分情况下我们不会去修改它。...下图有4个窗口,左为Library窗口(近似于VS中的Toolbox),可以通过拖拽方式将控件加入到窗口里去;中间上方是可视化的UI编辑器,下方则是对象管理器,显示了界面中定义的对象;右侧便是用来修改属性的...到Library找到MainWindowController 并在下方下拉框中选取Outlets,并使用下方加号添加一个id,修改为NSTextField: 下一步是建立label和NSTextField...再将label右侧的小圆点拖动至NSTextField,当你释放鼠标你要看你NSTextField标签所联系在一起: 快完成了。...", ++count); } 此时可以选择菜单Run - Run,或直接使用快捷键Command(即Win键) + Alt + Enter便会编译项目,这样你就可以看到这个程序运行起来了。

    2.2K50

    macOS 应用注入开发简介与实践

    封面图片(来自网络) 前言 本篇算是对于之前的文章Mac OSX 之自己动手初步学习破解软件入门关于软件安全方面学习的一个补充,有疑问的朋友们可以在评论中多多留言提问和讨论.本文中用到的项目示例工程已上传至...运行时注入: 在App运行期,通过获取目标句柄(或内存地址)实现注入,多用于游戏外挂或应用辅助 链接库注入:通常采用动态链接库方式 多应用于破解软件限制 本文主要介绍的是动态链接库注入的相关实践,这不仅仅局限于...ExampleApp的二进制执行文件中 ....控制台应用信息 这样我们就实现了将自己的代码通过动态链接库的方式注入到目标App中执行的效果. 虽然仅仅是在控制台中输出简单的一条信息,但从这里开始我们就可以做很多有意思的事情了....AspectPositionAfter usingBlock:^(id info) { id instance = info.instance; NSTextField

    3.9K30

    试水 Mac 开发 —— 代码生成器

    代码生成器的难点在于解析输入,而输入的规则很多情况下是我们自己定的,只要尽可能保证解析规则简单,剩下的工作就是把解析好的信息填到预定的模版中输出而已。...Swift 中变量名是使用驼峰风格的,如果你的服务端是用 PHP,Ruby 之类的语言写的,返回的 JSON 中的 key 一般是用下划线分隔单词的,我们可以这么做: func normalizeVariableName...还有就是碰到了对象数组的话,对于该对象 Model 的命名,也不太好办,我的处理是属性名以“s”或者“List”结尾的话,就把“s”或者“List”之前的单词作为 Model 名,至于其它的情况(譬如...按《程序员修炼之道》中说的: 这是被动代码生成器的一个有趣的特性:它们不必完全正确。你需要在你投入生成器的努力和你花在修正其输出上的精力之间进行权衡。...在 Mac 开发中使用 RxSwift 感觉 RxCocoa 对 Cocoa 的支持并不好,譬如没有为 NSTextView 和 NSTextField 提供 rx.string、rx.stringValue

    98020

    macOS开发之NSTableView的应用详解

    NSTableView的应用详解 一、引言     和iOS开发中的UITableView有很大差别,NSTableView并非是一个可滚动的列表视图,其是一个不可滚动、支持多列多行的原始列表视图。...这是一个最简单的TableView示例,但是细读代码,麻雀虽小五脏俱全。首先NSTableView中的列是由NSTableColumn类描述的。一个列表可以有多个列。...需要注意,如果只实现这两个方法,则NSTableView会自动从列对象NSTableColume中取具体的行视图,通过dataCellForRow方法。...六、NSTableRowView解析     NSTableRowView用在View-Base的TableView中,其作为行容器存在。...*)tableView shouldReorderColumn:(NSInteger)columnIndex toColumn:(NSInteger)newColumnIndex; //设置某行向左或向右滑动时要显示的功能按钮

    5.8K21

    macOS AppKit 的事件响应简介

    NSApplication同时会响应(或派发)接收到的Apple Event(这个比较重要),比如应用启动或者被再次打开(reopened),这个最常用的一个使用场景是通过URL打开我们的App(处理方式与...Apple event 我们以最常用的鼠标或键盘操作来说明事件传递到应用的过程.当用户按下鼠标或者键盘时: 1.硬件设备首先检测到用户的这个操作,然后通过驱动程序将这个操作动作转换为操作数据....鼠标点击事件可以根据点击方向(按下或抬起)和鼠标按钮(左键,右键,或其他)被进一步的细化分类,这些定义在了NSEventType 和 NSResponder 中....item)或者某个NSObject 控件对象 ,当按下这个(或这组)键时,就相当于选中了菜单栏或者点击了控件对象.....在Cocoa 的一些类中,比如 NSButton, NSMenu, NSMatrix, 和 NSSavePanel 都提供了默认的响应处理.

    3.4K60

    SwiftUI TextField进阶——格式与校验

    作为UITextField(NSTextField)的SwiftUI封装,苹果为开发者提供了众多的构造方法和修饰符以提高其使用的便利性、定制性。...因此,在最近几个月的时间里,我逐渐抛弃了通过自行封装或使用其他第三方扩展库来实现某些需求思路。...只有当触发submit状态(commit)或失去焦点时,才会对文本进行格式化。行为与我们的最初的需求有一定差距。...有些开发者可以通过自定义键盘或添加inputAccessoryView来解决,但对于其他没有能力或精力的开发者来说,如果能直接对录入的无效字符进行屏蔽则也是不错的解决方案。...因此,采用这种思路,我们只能使用字符串作为绑定类型,将无法享受到SwiftUI新的构造方法带来的便捷性。方案二采用了该思路。

    10.1K20

    Klee:用 C++ 实现数据驱动开发

    开发者只需要用代码或其他方式描述各个界面元素与数据之间的关系,数据的流向、界面的维护工作将由框架自动处理,大大简化程序员需要关注的内容。...响应式编程 很多人不明白响应式实现的原理,我曾经也是,以为 C++ 作为一门静态编译型语言,是无法在运行期收集到,本应是编译期才能获知的依赖关系。毕竟没有执行到的条件分支,在运行时就根本不存在。...UILabel *    label = Label(name, 17_pt);  // iOS NSTextField *label = Label(name, 17_pt);  // macOS 包含布局组件的...,不参与绘制,不会出现在最终视图树中。...另外还有 Page,对标 iOS 的 UIViewController 或 Android 的 Activity 设计。

    2.8K30

    iOS之深入解析Xcode 13正式版发布的40个新特性

    四、资产目录 应用程序现在可以使用其资产目录中的 iOS 应用程序图标资产作为备用应用程序图标; 允许选择适用于所有平台(包括 watchOS)的通用系统颜色。...; 在适用于 macOS 12 的应用程序中,您可以使用属性检查器中的 localize 属性在非系统 NSMenuItem 上配置本地化的等效键选项; 在 iOS 15 的应用程序中,可以使用属性检查器中的...Bitbucket Server 帐户后,使用 Xcode 的源代码控制功能创建、审查和合并拉取请求; 现在可以从文档选项卡栏中的任何编辑器(或编辑器拆分)中启用代码审查,默认情况下它会在内嵌演示中显示比较...作为平台; 当尝试导入本地尚不可用的模块时,Xcode 现在会建议添加的集合中的包; 现在可以在 Add Packages 表中添加精选的包集合; 单元测试现在可以直接测试可执行目标。...Transparency 框架重置受保护资源“用户跟踪”的授权状态; 用 Swift 编写的测试方法可能会被标记为异步或异步抛出,以允许调用和等待来自异步 API 的结果,作为 Swift 并发语言功能的一部分

    12.8K40

    【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

    , 需要接口时, 就会选择定义一个父类, 以该父类派生 N 个子类, 该系列的类被成为 类簇; -- 类簇扩展方法 : 为父类增加方法, 类簇中得子类同时也增加该方法, 扩展类簇中得父类是最合适的方法;...catch 代码块处理异常, 程序就会终止; -- @catch 代码块捕获过程 : 运行环境接收到 异常对象 时, 会依次判断该异常对象类型是否是 @catch 代码块中异常或其子类实例, 如果匹配成功.../ 通过调用 类 或 对象的 getter 方法获取, 即用 ....检查继承关系 (1) 继承关系判断 继承关系判断方法 :  -- 判断类 : isMemberOfClass 方法, 传入 Class 对象, 判断该对象是否是 Class 对象对应类的实例; -- 判断类或子类...: isKindOfClass 方法, 传入 Class 对象, 判断该对象是否是 Class 对象对应类 或 子类的实例; -- 判断协议 : conformsToProtocol 犯法, 传入 Protocol

    1K10

    Jekyll-Admin-Mac 开发纪要-左侧菜单栏

    在Xcode6中使用IBDesignable创建自定义控件(翻译) 关于如何 NSView自定义背景颜色参考下面的连接 我们设置 NSView为继承与 BaseView 背景颜色试图。...布局参考之前 NSImageView的布局。 我们把刚才的 NSImageView作为子试图,布局设置下面。 ? ?...@IBOutlet weak var itemTitle: NSTextField! 我们按照之前写 SideMenuView试图的方法把 Xib的对象加载进来,具体的方法可以参考上面。...Keys无法作为正常的 Array使用,我们需要用 Array()对其进行初始化。...然而现在一个问题已经出现,现在这么多的配置需要配置岂不是很麻烦。 这就涉及到面向对象思想,但是我们可以在 Swift中使用 Struct作为我们的配置数据源。

    3.1K10

    what、who、why、where、when、how等疑问代码的详解

    二、基本疑问代词的用法 what 定义:用于询问事物的名称、性质、特征或行为等。 用法:what可以作为主语、宾语或定语出现在疑问句中。...who 定义:用于询问人的身份、职业或其他信息。 用法:who通常作为主语出现在疑问句中,引导整个疑问句。它也可以作为定语修饰名词,但不如what常见。...三、基本疑问代词在实际语境中的应用 日常对话 在日常对话中,基本疑问代词常用于询问对方的信息、意见或建议。...学术研究 在学术研究中,基本疑问代词常用于构建研究问题、引导讨论或提出假设。...新闻报道 在新闻报道中,基本疑问代词常用于引导读者思考、提出问题或引发讨论。

    1.1K10

    async函数中,如果不使用bind,this会指向什么?

    在 async 函数中,如果不使用 bind、箭头函数或其他方式来明确绑定 this,this 的指向取决于 async 函数的调用方式。下面是几种常见情况: 1....作为普通函数调用 如果 async 函数被作为普通函数调用,而不是作为对象的方法,this 将指向全局对象(在浏览器中是 window,在 Node.js 中是 global),在严格模式下则为 undefined...在回调中 如果 async 函数被用作回调函数(例如在 setTimeout 或其他异步操作中),this 的指向将取决于调用上下文。...setTimeout 中的函数没有绑定 this,因此 this 的指向是全局对象或 undefined。...总结 在 async 函数中,如果不使用 bind 或箭头函数,this 的指向取决于函数的调用方式: 作为对象的方法调用时,this 指向该对象。

    20600
    领券