我正在使用一个框架来定义和使用'ClassA',它是NSObject的子类.我想添加一些变量和功能,所以我自然创建了'ClassB','ClassA'的子类
现在我的问题是这个.这个框架中的许多方法返回'ClassA'的实例,我想将它转换为我的子类.
例如,采用这种方法:
- (ClassA *)doSomethingCool:(int)howCool
Run Code Online (Sandbox Code Playgroud)
现在在我的代码中我试试这个:
ClassB * objB;
objB = (ClassB *)doSomethingCool(10);
NSLog(@"objB className = %@", [objB className]);
Run Code Online (Sandbox Code Playgroud)
这运行得很好.没有编译或运行时错误或任何东西.但对我来说真正奇怪的是输出:
>> "objB className = ClassA"
Run Code Online (Sandbox Code Playgroud)
铸造显然失败了.不知道此时发生了什么... objB被输入为'ClassB',但它的className是'ClassA',它不会响应任何'ClassB'方法.
不确定这是怎么可能的......任何人都知道我在做错了什么?
我发现了一个类似的帖子,与我在这里提出的要求完全相反
我最近发现了一篇关于使用UITableViewCells提高滚动性能的精彩文章:http://engineering.twitter.com/2012/02/simple-strategies-for-smooth-animation.html - 虽然可以找到很多很棒的技巧文章,有一个特别令我好奇的:
Twitter for iPhone 4.0中的推文在微妙的纹理背景上有一个投影.这提出了一个挑战,因为混合是昂贵的.我们通过从单元格的内容区域中分割阴影区域来减少Core Animation必须考虑的非透明区域来解决这个问题.
使用iOS模拟器,单击调试 - 颜色混合图层将显示如下内容:

标记为红色的区域是混合的,绿色区域是不透明的.大.文章没有提到的是:我该如何实现?我的理解是UIView要么是不透明的,要么不是.在我看来,实现这一目标的唯一方法是使用子视图,但文章明确指出这是一个天真的实现:
相反,我们的推文单元格包含一个没有子视图的视图; 一个drawRect:绘制一切.
那么我该如何划分不透明的东西,以及我的单个drawRect:方法中没有的东西呢?
我正在尝试为我编写的Cocoa应用程序添加一些脚本功能.我为我的项目创建了一个sdef(脚本定义文件).到目前为止,我已经成功地使用AppleScript访问对象子元素(元素),但我不能在生活中找出如何调用方法(命令).
这是我的sdef文件.
<suite name="mySuite" code="mSUI" description="My Application Suite">
<class name="application" code="capp" description="Top level scripting object.">
<cocoa class="NSApplication"/>
<!-- I can access these elements fine -->
<element description="Test children." type="child" access="r">
<cocoa key="myChildren"/>
</element>
<!-- Cannot seem to call this method :( -->
<responds-to command="testmethod">
<cocoa method="exposedMethod:"/>
</responds-to>
</class>
<class name="child" code="cHIL" description="A Child." plural="children">
<cocoa class="Child"/>
<property name="name" code="pnam" description="The child name." type="text" access="r">
<cocoa key="name"/>
</property>
</class>
<command name="testmethod" code="tEST" description="Execute the test method" />
</suite>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器类实现(这是我的应用程序的委托) …
我在这里有一个简单的HTML选项表:
<table>
<tr>
<td>blue</td>
<td>green</td>
</tr>
<tr>
<td>red</td>
<td>cream</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
具有相关样式的CSS:
td { background-color: #FFF; border: 1px solid #3F3F3F; cursor: pointer; }
td.selected { color: #D93A2C; border: 1px solid #D93A2C; }
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

当我点击其中一个表格单元格时,我希望边框和文本为红色.所以我使用jQuery使用以下代码切换'.selected'类.
$('td').each(function(){
$(this).click(function(){
$(this).toggleClass('selected');
});
});
Run Code Online (Sandbox Code Playgroud)
但结果如下:

第一个表格单元格(蓝色)是唯一一个在选中时看起来像我想要的单元格.我需要突出显示所选单元格的所有边框.
关于如何实现这一点的任何想法?如果有人能提出更好的方法,我不反对放弃赌桌.
根据苹果的文档,以找出是否一个用户轻敲你的推送通知你应该检查applicationState在application:didReceiveRemoteNotification:
如果值为UIApplicationStateInactive,则用户点击操作按钮; 如果值为UIApplicationStateActive,则应用程序在收到通知时位于最前端.
我发现这并非总是如此.例如:
双击主页按钮以显示系统托盘并进入"快速应用程序切换模式",您的应用程序向上滑动以显示其他正在运行的应用程序,您的应用程序将进入非活动状态(即使它仍然可以看到mostyle).如果您在此模式下收到推送通知,您的应用代表仍会收到,application:didReceiveRemoteNotification:并且此时您的applicationState是UIApplicationStateActive.根据文档,您应该像用户点击警报一样对待它...但在这种情况下他们没有.不仅如此,用户甚至没有看到推送通知(可能是因为在此模式下应用程序的顶部被切断).
有没有人知道检测处于"快速应用切换模式"或正确处理通知的方法?
我试图向Gmail发出简单的POP3命令,如下所示:
openssl s_client -connect pop.gmail.com:995
+OK Gpop ready for requests from XX.XX.XX.XX
USER my-email@gmail.com
+OK send PASS
PASS mypassword
+OK Welcome.
Run Code Online (Sandbox Code Playgroud)
连接和身份验证都可以.但是,当我发出STAT或LIST命令时,我收到以下内容:
STAT
+OK 345 20351669
Run Code Online (Sandbox Code Playgroud)
这表明我的收件箱中有345封邮件.实际上我有180,只有少数未读.这个号码不能引用我的所有电子邮件......我已经拥有这个帐户5年了,肯定有超过345的WAY.所以,我开始RETR一些消息.最新的一个(#345)是从2007年1月开始的,最老的一个(#1)是从2006年末开始的.在写这篇文章的过程中,我收到了一些新的电子邮件,但即使在重新连接并发布新的LIST命令之后,345号码不会改变.
我不是电子邮件/流行专家,但我真的很难过......在Gmail设置中,"所有消息"都启用了POP3.我甚至尝试用另一个Gmail帐户做同样的事情,我得到完全相同的结果; 一个非常低的消息数和真正的旧消息.
有任何想法吗?
从 OSX 10.7 开始,如果您希望执行 NSView 的手动布局,您应该通过覆盖该layout方法来实现,并且每当您希望安排对该方法的调用时,您只需执行以下操作:
[myView setNeedsLayout:YES]
Run Code Online (Sandbox Code Playgroud)
我对 iOS 中的这种模式非常熟悉,但是在 OSX 上它似乎不起作用。我创建了一个自定义 NSView 并实现了layout它,但它似乎永远不会被调用。曾经。不是在添加子视图之后,不是在调用之后setNeedsLayout:YES,永远不是,我不知道为什么。我可以手动打电话layout,事情按预期工作,但文档说永远不要这样做。
从Xcode:
- (void)layout
Override this method if your custom view needs to perform custom
layout not expressible using the constraint-based layout system. In
this case you are responsible for calling setNeedsLayout: when
something that impacts your custom layout changes.
Run Code Online (Sandbox Code Playgroud)
来自在线文档:
仅当您想要进行自定义布局时才应该覆盖布局。如果你这样做,那么你还需要调用 setNeedsLayout: 当输入到你的自定义布局的东西发生变化时。
链接:http : //developer.apple.com/library/mac/#releasenotes/UserExperience/RNAutomaticLayout/#//apple_ref/doc/uid/TP40010631-CH1-SW14
任何帮助深表感谢。
更新: 这是一个示例 Xcode 项目的链接,该项目说明了LayoutTest.zip问题
我正在尝试在 SwiftUI 列表中显示一些简单的 Realm 对象。每个对象还有相关的子对象。
我可以通过使用@ObservedResults(Parent.self)属性包装器来很好地显示父对象。只需向 Realm 添加或删除父对象即可更新列表,这非常有效。
当我想显示相关的子模型时,就会出现问题。当我尝试以与添加父模型相同的方式在 Realm 中添加子模型时,也使用默认的 Realm.Configuration,我得到RLMException一句话Cannot modify managed RLMArray outside of a write transaction.
这是一个简单的 SwiftUI 视图,说明了该问题。
struct ContentView: View {
@ObservedResults(Parent.self) var parents
var body: some View {
VStack(spacing: 15) {
Button("Create parents") {
let realm = try! Realm()
try! realm.write {
realm.add(Parent(id: 1, name: "Nick"), update: .all)
realm.add(Parent(id: 2, name: "Lucas"), update: .all)
realm.add(Parent(id: 3, name: "Ryan"), update: .all)
}
}
Button("Create child") {
guard let parent …Run Code Online (Sandbox Code Playgroud) 我正在寻找的是一些示例代码,最好是Ruby on Rails,关于如何动态创建包含特定字体文本的图像.
基本上我想创建一个这样的URL:
/api/text_as_image?font=futura&text=foo
Run Code Online (Sandbox Code Playgroud)
并让它返回包含字体"futura"中文本"foo"的图像.我知道这可以用ImageMagick来完成,似乎无法弄明白.任何帮助表示赞赏.
我试图在我的应用程序中显示自定义工作表,但我认为我做错了什么.虽然一切似乎都很好,但我有一个相当奇怪的副作用.(花了几个小时才算出来).事实证明,每当我在我的应用程序中显示一个工作表时,Application委托就会被设置为工作表的实例,因此我的Controller将被取消设置为委托导致各种问题.
我创建了一个名为FailureSheet.xib的NIB文件.我在IB中布置了我的接口,然后创建了一个名为'FailureSheet.m'的'NSWindowController'的子类,我将其设置为File的Owner.这是我的FailureSheet类:
#import "FailureSheet.h"
@implementation FailureSheet // extends NSWindowController
- (id)init
{
if (self = [super initWithWindowNibName:@"FailureSheet" owner:self])
{
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (IBAction)closeSheetTryAgain:(id)sender
{
[NSApp endSheet:[self window] returnCode:1];
[[self window] orderOut:nil];
}
- (IBAction)closeSheetCancel:(id)sender
{
[NSApp endSheet:[self window] returnCode:0];
[[self window] orderOut:nil];
}
- (IBAction)closeSheetCancelAll:(id)sender
{
[NSApp endSheet:[self window] returnCode:-1];
[[self window] orderOut:nil];
}
@end
Run Code Online (Sandbox Code Playgroud)
这里没有什么复杂的事情发生.现在这就是我在'Controller'类中显示FailureSheet的方法:
sheet = [[FailureSheet alloc] init];
[NSApp beginSheet:[sheet window]
modalForWindow:window
modalDelegate:self
didEndSelector:@selector(failureSheetDidEnd:etc:etc:)
contextInfo:nil]; …Run Code Online (Sandbox Code Playgroud) cocoa ×3
objective-c ×3
ios ×2
applescript ×1
casting ×1
cocoa-sheet ×1
command-line ×1
css ×1
delegates ×1
gmail ×1
html ×1
imagemagick ×1
inheritance ×1
javascript ×1
jquery ×1
layout ×1
nsview ×1
pop3 ×1
realm ×1
subclassing ×1
swift ×1
swiftui ×1
telnet ×1
uitableview ×1