Hello,

I've been following along the SBSendEmail example from Apple.

https://developer.apple.com/library/content/samplecode/SBSendEmail/Introduction/Intro.html

The same should be able to be done via pyobjc as well. The alloc init cycle
of the outgoing message object yields me a Python future object. Example
code below:

from ScriptingBridge import SBApplication


apple_mail = SBApplication.applicationWithBundleIdentifier_(
    'com.apple.mail')

apple_mail_message_class = apple_mail.classForScriptingClass_(
    'outgoing message')

apple_mail_message = apple_mail_message_class.alloc().initWithProperties_({
    'subject': 'foo',
    'content': 'bar',
    })

Only alloc()ing the object yields an ephemeral pseudo-SB object as improper
SB use does.

>>> apple_mail_message = apple_mail_message_class.alloc()

>>> apple_mail_message
<MailOutgoingMessage objective-c instance 0x7fc0586d24c0>

>>> apple_mail_message.subject()

>>> apple_mail_message.subject()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: cannot access attribute 'subject' of NIL
'MailOutgoingMessage' object

>>> apple_mail_message
<MailOutgoingMessage objective-c instance 0x0>

My understanding of what is going here is that interacting with it once
makes it go away as its retain count is 0 in the Obj-C VM.

The future object contains its properties in its repr().

>>> apple_mail_message
<future MailOutgoingMessage with properties {
    content = bar;
    subject = foo;
}>

>>> type(apple_mail_message)
<objective-c class SBProxyByClass at 0x7fffa69f9fe0>

So, how to work with these future objects? Or am I doing something
fundamentally wrong in how I'm trying to chase the obj-c example?

-- 
Joni Orponen
_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to